<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>01-隐式原型</title>
</head>

<body>
    <script>
        /* 
            js规定：
                1. 构造函数(对象/实例)，有一个 prototype(显示原型)属性，prototype 是一个对象
                2. prototype 这个对象的所有属性和方法是构造函数的实例化对象，所共享的
            疑问：
                game 定义在构造函数的prototype上，是 prototype 的一个属性
                为何 eason、jay 这些对象，可以直接使用

            隐式原型：
                1. 每个对象都会有一个属性 __proto__,
                2. 指向了构造函数的prototype(显示原型)
        */
        function Star(name, age) {
            this.age = age;
            this.name = name;
            this.sing = function () {
                console.log('这瓜保熟吗？');
            }
        }
        Star.prototype.game = function () {
            console.log('今晚吃鸡');
        }
        let eason = new Star('eason', 22);
        eason.sing();
        eason.game();

        console.log(eason);

        console.log(eason.__proto__);
        console.log(eason.__proto__ === Star.prototype);

        
    </script>
</body>

</html>